

//使用axios要用npm命令下载到组件库中
import axios from "axios";
import { ElMessage } from 'element-plus'

//将共同的移除出来
// const baseURL = 'http://localhost:8080'; 

//解决跨域请求，使用代理方式
const baseURL = '/api';
const instance = axios.create({baseURL}); //注意包裹一个大括号

//导入token状态
import { useTokenStore } from '@/stores/token.js';

//定义添加请求拦截器
instance.interceptors.request.use(
    (config)=>{
        //在发送请求之前做什么
        let tokenStore = useTokenStore()
        //如果token中有值，在携带
        if(tokenStore.token){
            config.headers.Authorization=tokenStore.token
        }
        return config
    },
    (err)=>{
        //如果请求错误做什么
        Promise.reject(err)
    }
)


import router from '@/router/index.js'

const i = 0;
//定义响应拦截器 本身就是异步的，所以在api的类中可以不加async await
instance.interceptors.response.use(
    result=>{
        //操作成功
        if(result.data.code === 0){
            return result.data;
        }
        //操作失败
        // alert(result.data.message? result.data.message : '服务器异常')
        ElMessage.error(result.data.message? result.data.message : '服务器异常')
        //将异步请求的状态转换为失败的状态
        return Promise.reject(err);

        
    },
    err=>{
        //未登录统一处理
        if(err.response.status===401 ){
            
            router.push('/login')
            // ElMessage.error('请先登录1')
         
            // router.push('/login')
            // ElMessage.error('请先登录1')
            // return new Promise(resolve => {  
            //     setTimeout(() => {  
            //         router.push('/login')
            //         ElMessage.error('请先登录1')
            //     }, 3000); // 休眠3秒  
            //   });  
            
        }else{
            ElMessage.error('服务器异常')
            router.push('/login')
        }
        
        return Promise.reject(err);//异步的状态转换失败的状态
    }
)

export default instance;
